java【杨辉三角形】

int row = 8;    //行数
int [][] p = new int[row][row];
for(int i=0; i<row; i++){
    for(int j=0; j<=i; j++){
        //第一列对角线的值都为1
        if(j==0 ||j==i){
            p[i][j] = 1;
        }else{
            //其他元素的值是其正上方和其左上方元素值的和
            p[i][j] = p[i-1][j-1] +  p[i-1][j];
        }
    }
}
//打印输出
for(int i=0; i<row; i++){
    for(int j=0; j<=i; j++){
        System.out.printf(p[i][j] + " ");
    }
}    

 

Java中,杨辉三角形是一个经典的组合数学问题,它是一种二维数组的形式,每一行的每个数字都是前一行两个对应数字之和。要将杨辉三角形居中并写入文件,你可以按照以下步骤操作: 1. 定义一个函数来生成杨辉三角形。首先,确定要生成的层数(即最大行数),然后创建一个二维数组来存储结果。 ```java public static int[][] generatePascalTriangle(int n) { int[][] triangle = new int[n][n]; for (int i = 0; i < n; i++) { triangle[i][0] = 1; triangle[0][i] = 1; } for (int row = 2; row < n; row++) { for (int col = 1; col < row; col++) { triangle[row][col] = triangle[row - 1][col - 1] + triangle[row - 1][col]; } } return triangle; } ``` 2. 将生成的三角形居中。由于杨辉三角形是对称的,我们可以只保存一半到一个新数组,另一半可以通过镜像对称得到。 ```java public static int[][] centerTriangle(int[][] triangle, int n) { int mid = n / 2; int[] centered = new int[mid * 2 + 1]; for (int i = 0; i < mid; i++) { centered[2 * i] = triangle[i][mid]; centered[2 * i + 1] = triangle[i][mid - 1]; } return centered; } ``` 3. 将居中后的三角形写入文件。可以使用`BufferedWriter`类将内容写入文本文件。 ```java import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public static void writeToFile(int[] triangle, String fileName) { try (BufferedWriter writer = new BufferedWriter(new FileWriter(fileName))) { for (int num : triangle) { writer.write(num + " "); } writer.newLine(); } catch (IOException e) { System.err.println("Error writing to file: " + e.getMessage()); } } ``` 4. 组合所有步骤,并运行程序。调用上述函数并传递所需的层数和文件名作为参数。 ```java public static void main(String[] args) { int numRows = 5; // 根据需求调整层数 int[][] originalTriangle = generatePascalTriangle(numRows); int[] centeredTriangle = centerTriangle(originalTriangle, numRows); String filename = "yuanhui_triangle.txt"; writeToFile(centeredTriangle, filename); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值